When a computer is powered on, the binary image of its operating system must first be loaded into memory from a storage device in order for the operating system to be set running and controlling the whole computer system. In order to load the operating system (OS), booting or bootstrapping mechanisms are conventionally used to initiate or start the computer system running.
Many computer systems automatically start a program that resides in nonvolatile storage devices such as ROM, or flash memory. Such a program is generally a small ROM monitor that can do simple things like reading and writing memory. Sometimes this small program is referred to as the system basic input-output-system or BIOS, although a BIOS program is a more specific case of such ROM-based program. This ROM monitor program can also read into memory usually one specific block of data storage devices such as hard disk drive. Usually, the computers or other information appliances of a particular type store some device and/or address information in the ROM as a first place, or as ordered alternative places, to find more complex and lengthy programs or code so that multiple components of the system may be loaded. As the ROM monitor may generally not know exactly what device or what hard disk drive device or capacity will store other operating system or program components, certain conventions have been established so that at least certain standards exist in conventional systems and devices. This ROM monitor program is the hook needed to run the whole operating system in a computer. Usually, the ROM can be any types of non volatile memory such as flash memory.
With reference to the illustration in FIG. 1, there is shown a typical approach to booting an operating system that is stored in or resides on a hard disk drive accessible over the system or other internal bus 40 of a host computer. First (Step 1), the monitor program in the ROM 10 reads the boot block 301 of the hard disk drive storage device 30 into the main memory 20 of the host computer, where the loading occurs at a specified location of the main memory 201. The boot block contains or includes a loader program. Next (Step 2), the monitor program transfers control to the loader program read in from the boot block (in Step 1). Then (Step 3), the boot block loader program finds and loads the operating system blocks 302 stored in the hard disk into the specified main memory location 202. Finally (Step 4), the loading of the operating system into the main memory is completed, and the loader program originally in the boot block but now executing from main memory transfers control to the operating system, and the operating system then starts running and controlling the host computer system. Other variants are known and those workers having ordinary skill in the art will appreciate the variations and additional details associated with conventional booting methods and device characteristics.
It is typical that computer system gets through several bootstrapping steps before finally bootstrapping its operating system software. For example, FIG. 2 shows the basic steps of a typical computer system bootstrapping its operating system. The monitor program stored and accessible from a non-volatile memory of the system (typically a motherboard resident read-only memory or ROM chip) loads a system boot loader program or code 71, and the system boot loader program or code, in turn, loads the actual operating system software 72 from an internal bus coupled storage device such as from an internal IDE bus coupled hard disk drive.
FIG. 3 shows the simplified steps of a conventional bootstrapping from a hard disk drive of a PC with WINDOWS™ operating system from Microsoft Corp. of Redmond, Wash. (Alternative conventional systems and method may utilize UNIX or Linux operating systems or be Apple Computer systems operating system based.) The BIOS program of the computer checks Master Boot Record (MBR) of the booting device 410 and the BIOS reads in or loads the MBR (master boot record) of the hard disk drive into a specific main memory address of the main memory and executes the MBR 420. The MBR checks the partition table to find the active partition of the hard disk drive 430 and reads the PBR (partition boot record) into a specific main memory address of the main memory and executes the PBR 440. The PBR reads the system loader (such as “ntldr”, the system boot loader of WINDOWS™ operating system) into a specific main memory address of the main memory and executes the system loader (such as “ntldr”) 450. It is the boot loader, such as ntldr, that performs series of system initialization and finally loads the operating system into the main memory 460. During the system loading process, the boot loader reads a series of software modules including system data structures, files, device drivers, and DLL's from the booting device such as hard disk drive into its main memory.
FIG. 4 shows the procedures that the conventional boot loader performs in a typical computer system. The boot loader initializes video system (such as for debugging) and initializes paging mode 461. Then it initializes the input/output (I/O) system and the operating system boot driver software needed for actual operating system loading 462. Once the system is initialized, the loader reads in the file table and possibly a mini file system for the boot loader 463; and performs series of system initializations according to the hardware profile and configuration recovery file 464; and loads all the DLL's, kernel images, registry database, and device drivers respectively 465, 466, 467 before it completes the loading of its operating system software 468, such as by executing “ntoskrnl.exe.
During the loading process, the loader uses the boot driver software in order to access the booting device for loading the necessary software modules and that the boot driver software is a simple device driver that facilitates the loader program to access the booting device during the booting process. Typically, the boot driver is a simplified SCSI device driver if the booting device is a hard disk drive.
While emphasis in the above description has been on hard disk drive stored operating systems, it will be appreciated that the operating system can reside in CD, DVD, flash memory, floppy diskette and other persistent storage media besides hard disk drives 30. These alternatives are particularly useful for new computers or when reloading of an operating system onto a replacement hard disk drive. One key feature of conventional booting devices and booting methods has been that no matter what the hardware boot device, the hardware devices that contain the operating system from which the operating system is loaded has been attached to an internal bus 40 of the computer system.
Conventional computer systems, including most notebook computers, still keep all the essential hardware components including hard disk from which the computer bootstraps (or “boots” for short) its operating system is not only collocated with the computer, but also housed within one enclosure, such as the housing of the computer whether a so called desktop or notebook type model.
In some circumstances, however, it may be desirable for the computer system to be constructed such a way that the system hard disk containing the operating system and even the computer user's own data is either not collocated or is kept physically separated from rest of the whole computer system for better portability, for security, or for other reasons. However, the conventional need to have the bootable device coupled to an internal bus that is usually a high-speed parallel type bus, such as the main system bus, or a high-speed IDE, EIDE, ATA, or other high-speed bus makes separation and detachment difficult and practically impossible. Especially if the computer system is designed and built to provide an internal bus configured bootable hard disk that contains operating system, then attempts at modification of the computer to separate the bootable hard disk drive (or other boot device) from the rest of the computer and still maintain an ability to boot from that separated hard disk drive, will be difficult at best and likely practically impossible.
Therefore there is a need to provide a computer system that is able to boot from a separate external boot device, such as a hard disk drive, that is not connected directly to an internal bus of the computer to be booted. It is also desirable to provide a simple bootable device that supports booting in this manner. It is also desirable to provide devices and methods for booting that are compatible with conventional computers and operating systems, such as for example personal computers (PC's) made by Compaq, Dell, Hewlett-Packard, Gateway, and Apple Computer and support any of the conventional or to be implemented Windows, Linux, Unix, Apple, or other operating systems. Advantageously, exiting or partially existing physical hardware components may also be utilized. Such backward compatibility in terms of hardware and software would permit wide spread adaptation over a large installed base of computers.
Some computers including diskless computers bootstrap their operating systems from network servers over an internet or intranet connection. FIG. 5 shows an example of a network having a server and multiple clients. During the network-based booting process, the client computers 51, 52 send out packet(s) requesting files necessary for bootstrapping to the server computer 60, then the server computer 60 replies to the client computer 51, 52 with appropriate boot files from a disk 61 or other storage having boot files. However, it will be appreciated that the booting in this example from boot devices 61 or storage connected through the server computer (or server process executing on a computer) over the network is different from the booting from a storage device that is directly attached to the network without an interposed server computer having its own processor or CPU, memory, and executing operating system and application program. Bootstrapping a host computer system from the network server requires that the independent boot server computer system exist and such boot server computer is a computer separate and independent of the client computers that need to boot. The host computers must also have or execute a client process in order to communicate with the server. The need for server computer infrastructure and client processes running on the computer needing to boot increases the cost and complexity of network server based booting and by and large limits the applicability to corporate or large organization information technology systems or to some paid service that may permit an individual to maintain a copy of his/her operating system on a server and use it to boot in the event of a local boot drive failure or other corruption.
It will also be appreciated that external storage devices with USB, IEEE 1394, or other interface have been used, however, booting from these external devices is not a booting over a network.
Therefore, although there have been some attempts to provide a boot capability over a network from a remote hard disk drive storage device, such attempts have not been entirely successful in providing a inexpensive booting or bootstrapping device or method, or computer system that can bootstrap using such directly attached network storage devices that do not require or utilize an intervening server to access the directly attached storage device.